load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")

go_library(
    name = "aggfuncs",
    srcs = [
        "aggfuncs.go",
        "builder.go",
        "func_avg.go",
        "func_bitfuncs.go",
        "func_count.go",
        "func_count_distinct.go",
        "func_cume_dist.go",
        "func_first_row.go",
        "func_group_concat.go",
        "func_json_arrayagg.go",
        "func_json_objectagg.go",
        "func_lead_lag.go",
        "func_max_min.go",
        "func_ntile.go",
        "func_percent_rank.go",
        "func_percentile.go",
        "func_rank.go",
        "func_stddevpop.go",
        "func_stddevsamp.go",
        "func_sum.go",
        "func_value.go",
        "func_varpop.go",
        "func_varsamp.go",
        "row_number.go",
        "spill_deserialize_helper.go",
        "spill_serialize_helper.go",
    ],
    importpath = "github.com/pingcap/tidb/pkg/executor/aggfuncs",
    visibility = ["//visibility:public"],
    deps = [
        "//pkg/expression",
        "//pkg/expression/aggregation",
        "//pkg/expression/context",
        "//pkg/parser/ast",
        "//pkg/parser/charset",
        "//pkg/parser/mysql",
        "//pkg/planner/util",
        "//pkg/sessionctx/variable",
        "//pkg/types",
        "//pkg/util/chunk",
        "//pkg/util/codec",
        "//pkg/util/collate",
        "//pkg/util/dbterror/plannererrors",
        "//pkg/util/hack",
        "//pkg/util/logutil",
        "//pkg/util/selection",
        "//pkg/util/serialization",
        "//pkg/util/set",
        "//pkg/util/stringutil",
        "@com_github_dgryski_go_farm//:go-farm",
        "@com_github_pingcap_errors//:errors",
        "@org_uber_go_zap//:zap",
    ],
)

go_test(
    name = "aggfuncs_test",
    timeout = "moderate",
    srcs = [
        "aggfunc_test.go",
        "export_test.go",
        "func_avg_test.go",
        "func_bitfuncs_test.go",
        "func_count_test.go",
        "func_cume_dist_test.go",
        "func_first_row_test.go",
        "func_group_concat_test.go",
        "func_json_arrayagg_test.go",
        "func_json_objectagg_test.go",
        "func_lead_lag_test.go",
        "func_max_min_test.go",
        "func_ntile_test.go",
        "func_percent_rank_test.go",
        "func_percentile_test.go",
        "func_rank_test.go",
        "func_stddevpop_test.go",
        "func_stddevsamp_test.go",
        "func_sum_test.go",
        "func_value_test.go",
        "func_varpop_test.go",
        "func_varsamp_test.go",
        "main_test.go",
        "row_number_test.go",
        "spill_helper_test.go",
        "window_func_test.go",
    ],
    embed = [":aggfuncs"],
    flaky = True,
    race = "on",
    shard_count = 50,
    deps = [
        "//pkg/expression",
        "//pkg/expression/aggregation",
        "//pkg/parser/ast",
        "//pkg/parser/charset",
        "//pkg/parser/mysql",
        "//pkg/planner/util",
        "//pkg/sessionctx",
        "//pkg/sessionctx/variable",
        "//pkg/testkit",
        "//pkg/testkit/testsetup",
        "//pkg/types",
        "//pkg/util/chunk",
        "//pkg/util/codec",
        "//pkg/util/collate",
        "//pkg/util/hack",
        "//pkg/util/mock",
        "//pkg/util/set",
        "@com_github_dgryski_go_farm//:go-farm",
        "@com_github_pingcap_errors//:errors",
        "@com_github_stretchr_testify//require",
        "@org_uber_go_goleak//:goleak",
    ],
)
